Account Factory for Terraform (AFT) からAWSアカウントを削除する
どうも、ちゃだいん(@chazuke4649)です。
今回は、Account Factory for Terraform (AFT) からAWSアカウントを削除してみます。
参考情報
基本的には以下公式ドキュメントに従って行います。
概要
前提
- 対象AWSアカウント:
sandbox-aft-02
:111122223333
手順
- ステップ 1: アカウントリクエストを保存する git リポジトリからアカウントを削除する
- ステップ 2: アカウントカスタマイズパイプラインを削除する
- ステップ 3: Terraform ワークスペースを削除する (Terraform Cloud および Terraform Enterprise のお客様のみ)
- ステップ 4: S3 バックエンドから Terraform の状態を削除する
- ステップ 5: アカウントのメタデータを削除する
ステップ 1: アカウントリクエストを保存する git リポジトリからアカウントを削除する
アカウント リクエストを保存するgitリポジトリで、AFT から削除するアカウントのアカウント リクエストを削除します。
AFT関連リポジトリのうち、リクエストリポジトリの該当コードをコメントアウトします。
## AFTから当該アカウントを削除するため、コメントアウトする # module "sandbox_aft_02" { # source = "./modules/aft-account-request" # control_tower_parameters = { # AccountEmail = "aws+aft_02@example.jp" # AccountName = "sandbox-aft-02" # ManagedOrganizationalUnit = "Sandbox" # SSOUserEmail = "aws@example.jp" # SSOUserFirstName = "NOT" # SSOUserLastName = "USE" # } # account_tags = { # "Project" = "test" # "Environment" = "Production" # "AFT" = true # } # change_management_parameters = { # change_requested_by = "chadain" # change_reason = "Added custom fields" # } # # account_customizations_name = "sandbox-customizations" # }
ローカルリポジトリからリモートへプッシュします。
すると、CodePipeline側にて、ct-aft-account-request
が発火されました。
無事applyされ、特に何も起こらなかった模様です。
ステップ 2: アカウントカスタマイズパイプラインを削除する
AFT 管理アカウントで、AFT から削除するアカウントの AWS CodePipeline を削除します。このパイプラインには、名前のプレフィックスとしてアカウント ID があります。
CodePipelineコンソールで当該AWSアカウントIDで検索すると、該当のパイプラインが見つかったのでこれを削除します。
※間違えて、他のパイプラインを削除しないように十分注意します
Terraformワークスペースは使用していないので、ステップ3はスキップします。
ステップ 4: S3 バックエンドから Terraform の状態を削除する
AFT 管理アカウントで、AFT から削除するアカウントの S3 バケット内の関連するフォルダをすべて削除します。以下の例では、プレースホルダー番号 012345678901 を AFT 管理アカウント ID 番号に置き換えます。
Terraform OSS を選択した場合、aft-backend-012345678901-primary-region および aft-backend-012345678901-secondary-region S3 バケットには、アカウントごとに (カスタマイズパイプラインの状態、グローバルおよびアカウントカスタマイズの状態に関連する) 3 つのフォルダがあります。
stateファイルを削除するちょっと怖い作業ですが、以下のようにAWSアカウントIDを検索し、該当するフォルダを2つ(今回はアカウントカスタマイズのフォルダがなかったので2つ)削除します。それを primary-region分とsecondary-region分と2つのバケットに対して行います。
該当する2つのフォルダを選択し、コンソールから削除します。
ちなみに、primaryで削除すれば、secondaryはレプリケーションされているため、自ら削除せずとも当該フォルダは削除されていました。
ステップ 5: アカウントのメタデータを削除する
AFT 管理アカウントで、AFT から削除するアカウントのアカウント関連のメタデータを削除します。このメタデータは、DynamoDB テーブルのパラメータ aft-request-metadata に保存されています。
DynamoDBテーブル aft-request-metadata
にて、該当するアイテムを検索し、削除します。
アイテムの削除が完了しました。
作業としては以上です。
まとめ
今回はAFTからAWSアカウントを削除しました。現時点でこれら関連リソースの削除は自動化されていないため、今回のように手順を追って各リソースを手動削除していく必要がありそうです。
それでは今日はこの辺で。ちゃだいん(@chazuke4649)でした。